//---------------------------------------------------------------------
// uQRCode二维码生成插件 v3.6.0 Basic
// 
// uQRCode是一款基于Javascript环境开发的二维码生成插件，适用所有Javascript运行环境的前端应用和Node.js。
// 
// Copyright (c) Sansnn uQRCode All rights reserved.
// 
// Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// 
// github地址：
//   https://github.com/Sansnn/uQRCode
// 
// npm地址：
//   https://www.npmjs.com/package/uqrcodejs
// 
// uni-app插件市场地址：
//   https://ext.dcloud.net.cn/plugin?id=1287
// 
// 复制使用请保留本段注释，感谢支持开源！
// 
//---------------------------------------------------------------------
//---------------------------------------------------------------------
// QRCode for JavaScript
//
// Copyright (c) 2009 Kazuhiko Arase
//
// URL: http://www.d-project.com/
//
// Licensed under the MIT license:
//   http://www.opensource.org/licenses/mit-license.php
//
// The word "QR Code" is registered trademark of 
// DENSO WAVE INCORPORATED
//   http://www.denso-wave.com/qrcode/faqpatent-e.html
//
//---------------------------------------------------------------------
"use strict";
let uQRCode;
! function() {
  function o(o) {
    this.mode = d.MODE_8BIT_BYTE, this.data = o
  }

  function e(o, e) {
    this.typeNumber = o, this.errorCorrectLevel = e, this.modules = null, this.moduleCount = 0, this.dataCache = null, this.dataList = new Array
  }

  function r(o, e) {
    if (null == o.length) throw new Error(o.length + "/" + e);
    for (var r = 0; r < o.length && 0 == o[r];) r++;
    this.num = new Array(o.length - r + e);
    for (var t = 0; t < o.length - r; t++) this.num[t] = o[t + r]
  }

  function t(o, e) {
    this.totalCount = o, this.dataCount = e
  }

  function i() {
    this.buffer = new Array, this.length = 0
  }

  function n() {
    function o(t, i, n) {
      t().then(o => {
        i(o)
      }).catch(o => {
        n(o)
      }).finally(() => {
        if (e.length) {
          const r = e.shift();
          o(r.task, r.resolve, r.reject)
        } else r = !1
      })
    }
    let e = this.waitingQueue = [],
      r = this.isRunning = !1;
    this.exec = function(t) {
      return new Promise((i, n) => {
        r ? e.push({
          task: t,
          resolve: i,
          reject: n
        }) : (r = !0, o(t, i, n))
      })
    }
  }

  function a(o) {
    this.errMsg = o
  }

  function u(o, e) {
    var r = this.data = "",
      t = this.size = 200,
      i = this.typeNumber = -1,
      n = (this.errorCorrectLevel = s.H, this.useDynamicSize = !1, this.dynamicSize = void 0, this.margin = 0),
      a = (this.backgroundColor = "#FFFFFF", this.backgroundImageSrc = void 0, this.backgroundImageWidth = void 0),
      d = this.backgroundImageHeight = void 0,
      g = this.backgroundImageX = void 0,
      l = this.backgroundImageY = void 0,
      h = (this.backgroundImageAlpha = 1, this.backgroundImageBorderRadius = 0, this.foregroundColor = "#000000", this.foregroundImageSrc = void 0, this.foregroundImageWidth = void 0),
      c = this.foregroundImageHeight = void 0,
      m = this.foregroundImageX = void 0,
      f = this.foregroundImageY = void 0,
      v = this.foregroundImagePadding = 0,
      C = (this.foregroundImageBackgroundColor = "#FFFFFF", this.foregroundImageBorderRadius = 0),
      p = this.foregroundImageShadowOffsetX = 0,
      b = this.foregroundImageShadowOffsetY = 0,
      y = this.foregroundImageShadowBlur = 0,
      k = (this.foregroundImageShadowColor = "#808080", this.foregroundPadding = 0, this.foregroundRadius = 1),
      I = this.positionProbeBackgroundColor = void 0,
      w = this.positionProbeForegroundColor = void 0,
      B = this.separatorColor = void 0,
      T = this.positionAdjustBackgroundColor = void 0,
      P = this.positionAdjustForegroundColor = void 0,
      S = this.timingBackgroundColor = void 0,
      A = this.timingForegroundColor = void 0,
      E = this.typeNumberBackgroundColor = void 0,
      D = this.typeNumberForegroundColor = void 0,
      N = this.darkBlockColor = void 0,
      L = (this.style = "default", this.patterns = [], this.canvasContext = void 0);
    this.queue = !1, this.modules = [], this.moduleCount = 0, this.drawModules = [];
    Object.defineProperties(this, {
      data: {
        get: () => ("" !== r && void 0 !== r || console.error("[uQRCode]: data must be set!"), r),
        set(o) {
          r = o
        }
      },
      size: {
        get: () => t,
        set(o) {
          t = Number(o)
        }
      },
      typeNumber: {
        get: () => i,
        set(o) {
          i = Number(o)
        }
      },
      margin: {
        get: () => n,
        set(o) {
          n = Number(o)
        }
      },
      backgroundImageWidth: {
        get() {
          return void 0 === a ? this.dynamicSize : this.useDynamicSize ? this.dynamicSize / this.size * a : a
        },
        set(o) {
          a = Number(o)
        }
      },
      backgroundImageHeight: {
        get() {
          return void 0 === d ? this.dynamicSize : this.useDynamicSize ? this.dynamicSize / this.size * d : d
        },
        set(o) {
          d = Number(o)
        }
      },
      backgroundImageX: {
        get() {
          return void 0 === g ? 0 : this.useDynamicSize ? this.dynamicSize / this.size * g : g
        },
        set(o) {
          g = Number(o)
        }
      },
      backgroundImageY: {
        get() {
          return void 0 === l ? 0 : this.useDynamicSize ? this.dynamicSize / this.size * l : l
        },
        set(o) {
          l = Number(o)
        }
      },
      foregroundImageWidth: {
        get() {
          return void 0 === h ? (this.dynamicSize - 2 * this.margin) / 4 : this.useDynamicSize ? this.dynamicSize / this.size * h : h
        },
        set(o) {
          h = Number(o)
        }
      },
      foregroundImageHeight: {
        get() {
          return void 0 === c ? (this.dynamicSize - 2 * this.margin) / 4 : this.useDynamicSize ? this.dynamicSize / this.size * c : c
        },
        set(o) {
          c = Number(o)
        }
      },
      foregroundImageX: {
        get() {
          return void 0 === m ? this.dynamicSize / 2 - this.foregroundImageWidth / 2 : this.useDynamicSize ? this.dynamicSize / this.size * m : m
        },
        set(o) {
          m = Number(o)
        }
      },
      foregroundImageY: {
        get() {
          return void 0 === f ? this.dynamicSize / 2 - this.foregroundImageHeight / 2 : this.useDynamicSize ? this.dynamicSize / this.size * f : f
        },
        set(o) {
          f = Number(o)
        }
      },
      foregroundImagePadding: {
        get() {
          return this.useDynamicSize ? this.dynamicSize / this.size * v : v
        },
        set(o) {
          v = Number(o)
        }
      },
      foregroundImageBorderRadius: {
        get() {
          return this.useDynamicSize ? this.dynamicSize / this.size * C : C
        },
        set(o) {
          C = Number(o)
        }
      },
      foregroundImageShadowOffsetX: {
        get() {
          return this.useDynamicSize ? this.dynamicSize / this.size * p : p
        },
        set(o) {
          p = Number(o)
        }
      },
      foregroundImageShadowOffsetY: {
        get() {
          return this.useDynamicSize ? this.dynamicSize / this.size * b : b
        },
        set(o) {
          b = Number(o)
        }
      },
      foregroundImageShadowBlur: {
        get() {
          return this.useDynamicSize ? this.dynamicSize / this.size * y : y
        },
        set(o) {
          y = Number(o)
        }
      },
      foregroundRadius: {
        get: () => k,
        set(o) {
          k = o > 1 ? 1 : o < 0 ? 0 : o
        }
      },
      positionProbeBackgroundColor: {
        get() {
          return I || this.backgroundColor
        },
        set(o) {
          I = o
        }
      },
      positionProbeForegroundColor: {
        get() {
          return w || this.foregroundColor
        },
        set(o) {
          w = o
        }
      },
      separatorColor: {
        get() {
          return B || this.backgroundColor
        },
        set(o) {
          B = o
        }
      },
      positionAdjustBackgroundColor: {
        get() {
          return T || this.backgroundColor
        },
        set(o) {
          T = o
        }
      },
      positionAdjustForegroundColor: {
        get() {
          return P || this.foregroundColor
        },
        set(o) {
          P = o
        }
      },
      timingBackgroundColor: {
        get() {
          return S || this.backgroundColor
        },
        set(o) {
          S = o
        }
      },
      timingForegroundColor: {
        get() {
          return A || this.foregroundColor
        },
        set(o) {
          A = o
        }
      },
      typeNumberBackgroundColor: {
        get() {
          return E || this.backgroundColor
        },
        set(o) {
          E = o
        }
      },
      typeNumberForegroundColor: {
        get() {
          return D || this.foregroundColor
        },
        set(o) {
          D = o
        }
      },
      darkBlockColor: {
        get() {
          return N || this.foregroundColor
        },
        set(o) {
          N = o
        }
      },
      canvasContext: {
        get: () => (void 0 === L && console.error("[uQRCode]: use drawCanvas, you need to set the canvasContext!"), L),
        set(o) {
          L = u.getCanvasContext(o)
        }
      }
    }), o && this.setOptions(o), e && (this.canvasContext = u.getCanvasContext(e))
  }
  o.prototype = {
    getLength: function(o) {
      return this.data.length
    },
    write: function(o) {
      for (var e = 0; e < this.data.length; e++) o.put(this.data.charCodeAt(e), 8)
    }
  }, e.prototype = {
    addData: function(e) {
      var r = new o(e);
      this.dataList.push(r), this.dataCache = null
    },
    isDark: function(o, e) {
      if (o < 0 || this.moduleCount <= o || e < 0 || this.moduleCount <= e) throw new Error(o + "," + e);
      return this.modules[o][e]
    },
    getModuleCount: function() {
      return this.moduleCount
    },
    make: function() {
      if (this.typeNumber < 1) {
        var o = 1;
        for (o = 1; o < 40; o++) {
          for (var e = t.getRSBlocks(o, this.errorCorrectLevel), r = new i, n = 0, a = 0; a < e.length; a++) n += e[a].dataCount;
          for (a = 0; a < this.dataList.length; a++) {
            var u = this.dataList[a];
            r.put(u.mode, 4), r.put(u.getLength(), l.getLengthInBits(u.mode, o)), u.write(r)
          }
          if (r.getLengthInBits() <= 8 * n) break
        }
        this.typeNumber = o
      }
      this.makeImpl(!1, this.getBestMaskPattern())
    },
    makeImpl: function(o, r) {
      this.moduleCount = 4 * this.typeNumber + 17, this.modules = new Array(this.moduleCount);
      for (var t = 0; t < this.moduleCount; t++) {
        this.modules[t] = new Array(this.moduleCount);
        for (var i = 0; i < this.moduleCount; i++) this.modules[t][i] = null
      }
      this.setupPositionProbePattern(0, 0), this.setupPositionProbePattern(this.moduleCount - 7, 0), this.setupPositionProbePattern(0, this.moduleCount - 7), this.setupPositionAdjustPattern(), this.setupTimingPattern(), this.setupTypeInfo(o, r), this.typeNumber >= 7 && this.setupTypeNumber(o), null == this.dataCache && (this.dataCache = e.createData(this.typeNumber, this.errorCorrectLevel, this.dataList)), this.mapData(this.dataCache, r)
    },
    setupPositionProbePattern: function(o, e) {
      for (var r = -1; r <= 7; r++)
        if (!(o + r <= -1 || this.moduleCount <= o + r))
          for (var t = -1; t <= 7; t++) e + t <= -1 || this.moduleCount <= e + t || (this.modules[o + r][e + t] = 0 <= r && r <= 6 && (0 == t || 6 == t) || 0 <= t && t <= 6 && (0 == r || 6 == r) || 2 <= r && r <= 4 && 2 <= t && t <= 4)
    },
    getBestMaskPattern: function() {
      for (var o = 0, e = 0, r = 0; r < 8; r++) {
        this.makeImpl(!0, r);
        var t = l.getLostPoint(this);
        (0 == r || o > t) && (o = t, e = r)
      }
      return e
    },
    createMovieClip: function(o, e, r) {
      var t = o.createEmptyMovieClip(e, r),
        i = 1;
      this.make();
      for (var n = 0; n < this.modules.length; n++)
        for (var a = n * i, u = 0; u < this.modules[n].length; u++) {
          var d = u * i,
            s = this.modules[n][u];
          s && (t.beginFill(0, 100), t.moveTo(d, a), t.lineTo(d + i, a), t.lineTo(d + i, a + i), t.lineTo(d, a + i), t.endFill())
        }
      return t
    },
    setupTimingPattern: function() {
      for (var o = 8; o < this.moduleCount - 8; o++) null == this.modules[o][6] && (this.modules[o][6] = o % 2 == 0);
      for (var e = 8; e < this.moduleCount - 8; e++) null == this.modules[6][e] && (this.modules[6][e] = e % 2 == 0)
    },
    setupPositionAdjustPattern: function() {
      for (var o = l.getPatternPosition(this.typeNumber), e = 0; e < o.length; e++)
        for (var r = 0; r < o.length; r++) {
          var t = o[e],
            i = o[r];
          if (null == this.modules[t][i])
            for (var n = -2; n <= 2; n++)
              for (var a = -2; a <= 2; a++) this.modules[t + n][i + a] = -2 == n || 2 == n || -2 == a || 2 == a || 0 == n && 0 == a
        }
    },
    setupTypeNumber: function(o) {
      for (var e = l.getBCHTypeNumber(this.typeNumber), r = 0; r < 18; r++) {
        var t = !o && 1 == (e >> r & 1);
        this.modules[Math.floor(r / 3)][r % 3 + this.moduleCount - 8 - 3] = t
      }
      for (r = 0; r < 18; r++) {
        t = !o && 1 == (e >> r & 1);
        this.modules[r % 3 + this.moduleCount - 8 - 3][Math.floor(r / 3)] = t
      }
    },
    setupTypeInfo: function(o, e) {
      for (var r = this.errorCorrectLevel << 3 | e, t = l.getBCHTypeInfo(r), i = 0; i < 15; i++) {
        var n = !o && 1 == (t >> i & 1);
        i < 6 ? this.modules[i][8] = n : i < 8 ? this.modules[i + 1][8] = n : this.modules[this.moduleCount - 15 + i][8] = n
      }
      for (i = 0; i < 15; i++) {
        n = !o && 1 == (t >> i & 1);
        i < 8 ? this.modules[8][this.moduleCount - i - 1] = n : i < 9 ? this.modules[8][15 - i - 1 + 1] = n : this.modules[8][15 - i - 1] = n
      }
      this.modules[this.moduleCount - 8][8] = !o
    },
    mapData: function(o, e) {
      for (var r = -1, t = this.moduleCount - 1, i = 7, n = 0, a = this.moduleCount - 1; a > 0; a -= 2)
        for (6 == a && a--;;) {
          for (var u = 0; u < 2; u++)
            if (null == this.modules[t][a - u]) {
              var d = !1;
              n < o.length && (d = 1 == (o[n] >>> i & 1));
              var s = l.getMask(e, t, a - u);
              s && (d = !d), this.modules[t][a - u] = d, i--, -1 == i && (n++, i = 7)
            } if (t += r, t < 0 || this.moduleCount <= t) {
            t -= r, r = -r;
            break
          }
        }
    }
  }, e.PAD0 = 236, e.PAD1 = 17, e.createData = function(o, r, n) {
    for (var a = t.getRSBlocks(o, r), u = new i, d = 0; d < n.length; d++) {
      var s = n[d];
      u.put(s.mode, 4), u.put(s.getLength(), l.getLengthInBits(s.mode, o)), s.write(u)
    }
    var g = 0;
    for (d = 0; d < a.length; d++) g += a[d].dataCount;
    if (u.getLengthInBits() > 8 * g) throw new Error("code length overflow. (" + u.getLengthInBits() + ">" + 8 * g + ")");
    for (u.getLengthInBits() + 4 <= 8 * g && u.put(0, 4); u.getLengthInBits() % 8 != 0;) u.putBit(!1);
    for (; !(u.getLengthInBits() >= 8 * g || (u.put(e.PAD0, 8), u.getLengthInBits() >= 8 * g));) u.put(e.PAD1, 8);
    return e.createBytes(u, a)
  }, e.createBytes = function(o, e) {
    for (var t = 0, i = 0, n = 0, a = new Array(e.length), u = new Array(e.length), d = 0; d < e.length; d++) {
      var s = e[d].dataCount,
        g = e[d].totalCount - s;
      i = Math.max(i, s), n = Math.max(n, g), a[d] = new Array(s);
      for (var h = 0; h < a[d].length; h++) a[d][h] = 255 & o.buffer[h + t];
      t += s;
      var c = l.getErrorCorrectPolynomial(g),
        m = new r(a[d], c.getLength() - 1),
        f = m.mod(c);
      u[d] = new Array(c.getLength() - 1);
      for (h = 0; h < u[d].length; h++) {
        var v = h + f.getLength() - u[d].length;
        u[d][h] = v >= 0 ? f.get(v) : 0
      }
    }
    var C = 0;
    for (h = 0; h < e.length; h++) C += e[h].totalCount;
    var p = new Array(C),
      b = 0;
    for (h = 0; h < i; h++)
      for (d = 0; d < e.length; d++) h < a[d].length && (p[b++] = a[d][h]);
    for (h = 0; h < n; h++)
      for (d = 0; d < e.length; d++) h < u[d].length && (p[b++] = u[d][h]);
    return p
  };
  for (var d = {
      MODE_NUMBER: 1,
      MODE_ALPHA_NUM: 2,
      MODE_8BIT_BYTE: 4,
      MODE_KANJI: 8
    }, s = {
      L: 1,
      M: 0,
      Q: 3,
      H: 2
    }, g = {
      PATTERN000: 0,
      PATTERN001: 1,
      PATTERN010: 2,
      PATTERN011: 3,
      PATTERN100: 4,
      PATTERN101: 5,
      PATTERN110: 6,
      PATTERN111: 7
    }, l = {
      PATTERN_POSITION_TABLE: [
        [],
        [6, 18],
        [6, 22],
        [6, 26],
        [6, 30],
        [6, 34],
        [6, 22, 38],
        [6, 24, 42],
        [6, 26, 46],
        [6, 28, 50],
        [6, 30, 54],
        [6, 32, 58],
        [6, 34, 62],
        [6, 26, 46, 66],
        [6, 26, 48, 70],
        [6, 26, 50, 74],
        [6, 30, 54, 78],
        [6, 30, 56, 82],
        [6, 30, 58, 86],
        [6, 34, 62, 90],
        [6, 28, 50, 72, 94],
        [6, 26, 50, 74, 98],
        [6, 30, 54, 78, 102],
        [6, 28, 54, 80, 106],
        [6, 32, 58, 84, 110],
        [6, 30, 58, 86, 114],
        [6, 34, 62, 90, 118],
        [6, 26, 50, 74, 98, 122],
        [6, 30, 54, 78, 102, 126],
        [6, 26, 52, 78, 104, 130],
        [6, 30, 56, 82, 108, 134],
        [6, 34, 60, 86, 112, 138],
        [6, 30, 58, 86, 114, 142],
        [6, 34, 62, 90, 118, 146],
        [6, 30, 54, 78, 102, 126, 150],
        [6, 24, 50, 76, 102, 128, 154],
        [6, 28, 54, 80, 106, 132, 158],
        [6, 32, 58, 84, 110, 136, 162],
        [6, 26, 54, 82, 110, 138, 166],
        [6, 30, 58, 86, 114, 142, 170]
      ],
      G15: 1335,
      G18: 7973,
      G15_MASK: 21522,
      getBCHTypeInfo: function(o) {
        for (var e = o << 10; l.getBCHDigit(e) - l.getBCHDigit(l.G15) >= 0;) e ^= l.G15 << l.getBCHDigit(e) - l.getBCHDigit(l.G15);
        return (o << 10 | e) ^ l.G15_MASK
      },
      getBCHTypeNumber: function(o) {
        for (var e = o << 12; l.getBCHDigit(e) - l.getBCHDigit(l.G18) >= 0;) e ^= l.G18 << l.getBCHDigit(e) - l.getBCHDigit(l.G18);
        return o << 12 | e
      },
      getBCHDigit: function(o) {
        for (var e = 0; 0 != o;) e++, o >>>= 1;
        return e
      },
      getPatternPosition: function(o) {
        return l.PATTERN_POSITION_TABLE[o - 1]
      },
      getMask: function(o, e, r) {
        switch (o) {
          case g.PATTERN000:
            return (e + r) % 2 == 0;
          case g.PATTERN001:
            return e % 2 == 0;
          case g.PATTERN010:
            return r % 3 == 0;
          case g.PATTERN011:
            return (e + r) % 3 == 0;
          case g.PATTERN100:
            return (Math.floor(e / 2) + Math.floor(r / 3)) % 2 == 0;
          case g.PATTERN101:
            return e * r % 2 + e * r % 3 == 0;
          case g.PATTERN110:
            return (e * r % 2 + e * r % 3) % 2 == 0;
          case g.PATTERN111:
            return (e * r % 3 + (e + r) % 2) % 2 == 0;
          default:
            throw new Error("bad maskPattern:" + o)
        }
      },
      getErrorCorrectPolynomial: function(o) {
        for (var e = new r([1], 0), t = 0; t < o; t++) e = e.multiply(new r([1, h.gexp(t)], 0));
        return e
      },
      getLengthInBits: function(o, e) {
        if (1 <= e && e < 10) switch (o) {
          case d.MODE_NUMBER:
            return 10;
          case d.MODE_ALPHA_NUM:
            return 9;
          case d.MODE_8BIT_BYTE:
          case d.MODE_KANJI:
            return 8;
          default:
            throw new Error("mode:" + o)
        } else if (e < 27) switch (o) {
          case d.MODE_NUMBER:
            return 12;
          case d.MODE_ALPHA_NUM:
            return 11;
          case d.MODE_8BIT_BYTE:
            return 16;
          case d.MODE_KANJI:
            return 10;
          default:
            throw new Error("mode:" + o)
        } else {
          if (!(e < 41)) throw new Error("type:" + e);
          switch (o) {
            case d.MODE_NUMBER:
              return 14;
            case d.MODE_ALPHA_NUM:
              return 13;
            case d.MODE_8BIT_BYTE:
              return 16;
            case d.MODE_KANJI:
              return 12;
            default:
              throw new Error("mode:" + o)
          }
        }
      },
      getLostPoint: function(o) {
        for (var e = o.getModuleCount(), r = 0, t = 0; t < e; t++)
          for (var i = 0; i < e; i++) {
            for (var n = 0, a = o.isDark(t, i), u = -1; u <= 1; u++)
              if (!(t + u < 0 || e <= t + u))
                for (var d = -1; d <= 1; d++) i + d < 0 || e <= i + d || 0 == u && 0 == d || a == o.isDark(t + u, i + d) && n++;
            n > 5 && (r += 3 + n - 5)
          }
        for (t = 0; t < e - 1; t++)
          for (i = 0; i < e - 1; i++) {
            var s = 0;
            o.isDark(t, i) && s++, o.isDark(t + 1, i) && s++, o.isDark(t, i + 1) && s++, o.isDark(t + 1, i + 1) && s++, 0 != s && 4 != s || (r += 3)
          }
        for (t = 0; t < e; t++)
          for (i = 0; i < e - 6; i++) o.isDark(t, i) && !o.isDark(t, i + 1) && o.isDark(t, i + 2) && o.isDark(t, i + 3) && o.isDark(t, i + 4) && !o.isDark(t, i + 5) && o.isDark(t, i + 6) && (r += 40);
        for (i = 0; i < e; i++)
          for (t = 0; t < e - 6; t++) o.isDark(t, i) && !o.isDark(t + 1, i) && o.isDark(t + 2, i) && o.isDark(t + 3, i) && o.isDark(t + 4, i) && !o.isDark(t + 5, i) && o.isDark(t + 6, i) && (r += 40);
        var g = 0;
        for (i = 0; i < e; i++)
          for (t = 0; t < e; t++) o.isDark(t, i) && g++;
        var l = Math.abs(100 * g / e / e - 50) / 5;
        return r += 10 * l, r
      }
    }, h = {
      glog: function(o) {
        if (o < 1) throw new Error("glog(" + o + ")");
        return h.LOG_TABLE[o]
      },
      gexp: function(o) {
        for (; o < 0;) o += 255;
        for (; o >= 256;) o -= 255;
        return h.EXP_TABLE[o]
      },
      EXP_TABLE: new Array(256),
      LOG_TABLE: new Array(256)
    }, c = 0; c < 8; c++) h.EXP_TABLE[c] = 1 << c;
  for (c = 8; c < 256; c++) h.EXP_TABLE[c] = h.EXP_TABLE[c - 4] ^ h.EXP_TABLE[c - 5] ^ h.EXP_TABLE[c - 6] ^ h.EXP_TABLE[c - 8];
  for (c = 0; c < 255; c++) h.LOG_TABLE[h.EXP_TABLE[c]] = c;
  r.prototype = {
    get: function(o) {
      return this.num[o]
    },
    getLength: function() {
      return this.num.length
    },
    multiply: function(o) {
      for (var e = new Array(this.getLength() + o.getLength() - 1), t = 0; t < this.getLength(); t++)
        for (var i = 0; i < o.getLength(); i++) e[t + i] ^= h.gexp(h.glog(this.get(t)) + h.glog(o.get(i)));
      return new r(e, 0)
    },
    mod: function(o) {
      if (this.getLength() - o.getLength() < 0) return this;
      for (var e = h.glog(this.get(0)) - h.glog(o.get(0)), t = new Array(this.getLength()), i = 0; i < this.getLength(); i++) t[i] = this.get(i);
      for (i = 0; i < o.getLength(); i++) t[i] ^= h.gexp(h.glog(o.get(i)) + e);
      return new r(t, 0).mod(o)
    }
  }, t.RS_BLOCK_TABLE = [
    [1, 26, 19],
    [1, 26, 16],
    [1, 26, 13],
    [1, 26, 9],
    [1, 44, 34],
    [1, 44, 28],
    [1, 44, 22],
    [1, 44, 16],
    [1, 70, 55],
    [1, 70, 44],
    [2, 35, 17],
    [2, 35, 13],
    [1, 100, 80],
    [2, 50, 32],
    [2, 50, 24],
    [4, 25, 9],
    [1, 134, 108],
    [2, 67, 43],
    [2, 33, 15, 2, 34, 16],
    [2, 33, 11, 2, 34, 12],
    [2, 86, 68],
    [4, 43, 27],
    [4, 43, 19],
    [4, 43, 15],
    [2, 98, 78],
    [4, 49, 31],
    [2, 32, 14, 4, 33, 15],
    [4, 39, 13, 1, 40, 14],
    [2, 121, 97],
    [2, 60, 38, 2, 61, 39],
    [4, 40, 18, 2, 41, 19],
    [4, 40, 14, 2, 41, 15],
    [2, 146, 116],
    [3, 58, 36, 2, 59, 37],
    [4, 36, 16, 4, 37, 17],
    [4, 36, 12, 4, 37, 13],
    [2, 86, 68, 2, 87, 69],
    [4, 69, 43, 1, 70, 44],
    [6, 43, 19, 2, 44, 20],
    [6, 43, 15, 2, 44, 16],
    [4, 101, 81],
    [1, 80, 50, 4, 81, 51],
    [4, 50, 22, 4, 51, 23],
    [3, 36, 12, 8, 37, 13],
    [2, 116, 92, 2, 117, 93],
    [6, 58, 36, 2, 59, 37],
    [4, 46, 20, 6, 47, 21],
    [7, 42, 14, 4, 43, 15],
    [4, 133, 107],
    [8, 59, 37, 1, 60, 38],
    [8, 44, 20, 4, 45, 21],
    [12, 33, 11, 4, 34, 12],
    [3, 145, 115, 1, 146, 116],
    [4, 64, 40, 5, 65, 41],
    [11, 36, 16, 5, 37, 17],
    [11, 36, 12, 5, 37, 13],
    [5, 109, 87, 1, 110, 88],
    [5, 65, 41, 5, 66, 42],
    [5, 54, 24, 7, 55, 25],
    [11, 36, 12],
    [5, 122, 98, 1, 123, 99],
    [7, 73, 45, 3, 74, 46],
    [15, 43, 19, 2, 44, 20],
    [3, 45, 15, 13, 46, 16],
    [1, 135, 107, 5, 136, 108],
    [10, 74, 46, 1, 75, 47],
    [1, 50, 22, 15, 51, 23],
    [2, 42, 14, 17, 43, 15],
    [5, 150, 120, 1, 151, 121],
    [9, 69, 43, 4, 70, 44],
    [17, 50, 22, 1, 51, 23],
    [2, 42, 14, 19, 43, 15],
    [3, 141, 113, 4, 142, 114],
    [3, 70, 44, 11, 71, 45],
    [17, 47, 21, 4, 48, 22],
    [9, 39, 13, 16, 40, 14],
    [3, 135, 107, 5, 136, 108],
    [3, 67, 41, 13, 68, 42],
    [15, 54, 24, 5, 55, 25],
    [15, 43, 15, 10, 44, 16],
    [4, 144, 116, 4, 145, 117],
    [17, 68, 42],
    [17, 50, 22, 6, 51, 23],
    [19, 46, 16, 6, 47, 17],
    [2, 139, 111, 7, 140, 112],
    [17, 74, 46],
    [7, 54, 24, 16, 55, 25],
    [34, 37, 13],
    [4, 151, 121, 5, 152, 122],
    [4, 75, 47, 14, 76, 48],
    [11, 54, 24, 14, 55, 25],
    [16, 45, 15, 14, 46, 16],
    [6, 147, 117, 4, 148, 118],
    [6, 73, 45, 14, 74, 46],
    [11, 54, 24, 16, 55, 25],
    [30, 46, 16, 2, 47, 17],
    [8, 132, 106, 4, 133, 107],
    [8, 75, 47, 13, 76, 48],
    [7, 54, 24, 22, 55, 25],
    [22, 45, 15, 13, 46, 16],
    [10, 142, 114, 2, 143, 115],
    [19, 74, 46, 4, 75, 47],
    [28, 50, 22, 6, 51, 23],
    [33, 46, 16, 4, 47, 17],
    [8, 152, 122, 4, 153, 123],
    [22, 73, 45, 3, 74, 46],
    [8, 53, 23, 26, 54, 24],
    [12, 45, 15, 28, 46, 16],
    [3, 147, 117, 10, 148, 118],
    [3, 73, 45, 23, 74, 46],
    [4, 54, 24, 31, 55, 25],
    [11, 45, 15, 31, 46, 16],
    [7, 146, 116, 7, 147, 117],
    [21, 73, 45, 7, 74, 46],
    [1, 53, 23, 37, 54, 24],
    [19, 45, 15, 26, 46, 16],
    [5, 145, 115, 10, 146, 116],
    [19, 75, 47, 10, 76, 48],
    [15, 54, 24, 25, 55, 25],
    [23, 45, 15, 25, 46, 16],
    [13, 145, 115, 3, 146, 116],
    [2, 74, 46, 29, 75, 47],
    [42, 54, 24, 1, 55, 25],
    [23, 45, 15, 28, 46, 16],
    [17, 145, 115],
    [10, 74, 46, 23, 75, 47],
    [10, 54, 24, 35, 55, 25],
    [19, 45, 15, 35, 46, 16],
    [17, 145, 115, 1, 146, 116],
    [14, 74, 46, 21, 75, 47],
    [29, 54, 24, 19, 55, 25],
    [11, 45, 15, 46, 46, 16],
    [13, 145, 115, 6, 146, 116],
    [14, 74, 46, 23, 75, 47],
    [44, 54, 24, 7, 55, 25],
    [59, 46, 16, 1, 47, 17],
    [12, 151, 121, 7, 152, 122],
    [12, 75, 47, 26, 76, 48],
    [39, 54, 24, 14, 55, 25],
    [22, 45, 15, 41, 46, 16],
    [6, 151, 121, 14, 152, 122],
    [6, 75, 47, 34, 76, 48],
    [46, 54, 24, 10, 55, 25],
    [2, 45, 15, 64, 46, 16],
    [17, 152, 122, 4, 153, 123],
    [29, 74, 46, 14, 75, 47],
    [49, 54, 24, 10, 55, 25],
    [24, 45, 15, 46, 46, 16],
    [4, 152, 122, 18, 153, 123],
    [13, 74, 46, 32, 75, 47],
    [48, 54, 24, 14, 55, 25],
    [42, 45, 15, 32, 46, 16],
    [20, 147, 117, 4, 148, 118],
    [40, 75, 47, 7, 76, 48],
    [43, 54, 24, 22, 55, 25],
    [10, 45, 15, 67, 46, 16],
    [19, 148, 118, 6, 149, 119],
    [18, 75, 47, 31, 76, 48],
    [34, 54, 24, 34, 55, 25],
    [20, 45, 15, 61, 46, 16]
  ], t.getRSBlocks = function(o, e) {
    var r = t.getRsBlockTable(o, e);
    if (null == r) throw new Error("bad rs block @ typeNumber:" + o + "/errorCorrectLevel:" + e);
    for (var i = r.length / 3, n = new Array, a = 0; a < i; a++)
      for (var u = r[3 * a + 0], d = r[3 * a + 1], s = r[3 * a + 2], g = 0; g < u; g++) n.push(new t(d, s));
    return n
  }, t.getRsBlockTable = function(o, e) {
    switch (e) {
      case s.L:
        return t.RS_BLOCK_TABLE[4 * (o - 1) + 0];
      case s.M:
        return t.RS_BLOCK_TABLE[4 * (o - 1) + 1];
      case s.Q:
        return t.RS_BLOCK_TABLE[4 * (o - 1) + 2];
      case s.H:
        return t.RS_BLOCK_TABLE[4 * (o - 1) + 3];
      default:
        return
    }
  }, i.prototype = {
    get: function(o) {
      var e = Math.floor(o / 8);
      return 1 == (this.buffer[e] >>> 7 - o % 8 & 1)
    },
    put: function(o, e) {
      for (var r = 0; r < e; r++) this.putBit(1 == (o >>> e - r - 1 & 1))
    },
    getLengthInBits: function() {
      return this.length
    },
    putBit: function(o) {
      var e = Math.floor(this.length / 8);
      this.buffer.length <= e && this.buffer.push(0), o && (this.buffer[e] |= 128 >>> this.length % 8), this.length++
    }
  }, u.errorCorrectLevel = s, u.queue = new n, u.queueLoadImage = new n, u.isQueueLoadImage = !1, u.loadImageCache = [], u.utf16To8 = function(o) {
    for (var e, r = "", t = 0; t < o.length; t++) e = o.charCodeAt(t), e >= 1 && e <= 127 ? r += o.charAt(t) : e > 2047 ? (r += String.fromCharCode(224 | e >> 12 & 15), r += String.fromCharCode(128 | e >> 6 & 63), r += String.fromCharCode(128 | e >> 0 & 63)) : (r += String.fromCharCode(192 | e >> 6 & 31), r += String.fromCharCode(128 | e >> 0 & 63));
    return r
  }, u.deepReplace = function(o = {}, e = {}, r = !1) {
    let t;
    t = r ? o : {
      ...o
    };
    for (let o in e) {
      var i = e[o];
      null != i && (i.constructor == Object ? t[o] = this.deepReplace(t[o], i) : i.constructor != String || i ? t[o] = i : t[o] = t[o])
    }
    return t
  }, u.getSomePropertyToNewObject = function(o = {}, e = []) {
    let r = {};
    return e.forEach(e => {
      r[e] = o[e]
    }), r
  }, u.getCanvasContext = function(o) {
    return o.setFillStyle = o.setFillStyle || function(e) {
      o.fillStyle = e
    }, o.setFontSize = o.setFontSize || function(e) {
      o.font = `${e}px`
    }, o.setTextAlign = o.setTextAlign || function(e) {
      o.textAlign = e
    }, o.setTextBaseline = o.setTextBaseline || function(e) {
      o.textBaseline = e
    }, o.draw = o.draw || function(o, e) {
      e && e()
    }, o
  }, u.getLoadImage = function(o) {
    return "function" == typeof o ? function(e, r = !1) {
      return u.isQueueLoadImage ? u.queueLoadImage.exec(() => new Promise((t, i) => {
        setTimeout(() => {
          const r = u.loadImageCache.find(o => o.src == e);
          r ? t(r.img) : o(e).then(o => {
            u.loadImageCache.push({
              src: e,
              img: o
            }), t(o)
          }).catch(o => {
            i(o)
          })
        }, r ? 150 : 10)
      })) : o(e)
    } : function(o) {
      return Promise.resolve(o)
    }
  };
  var m = u.loadImage = function(o) {
    return Promise.resolve(o)
  };
  Object.defineProperty(u, "loadImage", {
    get: () => m,
    set(o) {
      m = u.getLoadImage(o)
    }
  }), u.prototype = {
    setOptions(o) {
      var e, r, t, i, n, a, d, s, g, l, h, c, m, f, v, C, p, b, y, k, I, w, B, T, P, S, A, E, D, N, L, R, z, M, x, _, O, F, H, X, j, Y, Q, G, K, W, q, U, $, J, V, Z, oo, eo, ro, to, io, no, ao;
      o && u.deepReplace(this, {
        data: o.data || o.text,
        size: o.size,
        typeNumber: o.typeNumber,
        errorCorrectLevel: o.errorCorrectLevel,
        useDynamicSize: o.useDynamicSize,
        margin: o.margin,
        backgroundColor: o.backgroundColor || (null === (e = o.background) || void 0 === e ? void 0 : e.color),
        backgroundImageSrc: o.backgroundImageSrc || (null === (r = o.background) || void 0 === r ? void 0 : null === (t = r.image) || void 0 === t ? void 0 : t.src),
        backgroundImageWidth: o.backgroundImageWidth || (null === (i = o.background) || void 0 === i ? void 0 : null === (n = i.image) || void 0 === n ? void 0 : n.width),
        backgroundImageHeight: o.backgroundImageHeight || (null === (a = o.background) || void 0 === a ? void 0 : null === (d = a.image) || void 0 === d ? void 0 : d.height),
        backgroundImageX: o.backgroundImageX || (null === (s = o.background) || void 0 === s ? void 0 : null === (g = s.image) || void 0 === g ? void 0 : g.x),
        backgroundImageY: o.backgroundImageY || (null === (l = o.background) || void 0 === l ? void 0 : null === (h = l.image) || void 0 === h ? void 0 : h.y),
        backgroundImageAlpha: o.backgroundImageAlpha || (null === (c = o.background) || void 0 === c ? void 0 : null === (m = c.image) || void 0 === m ? void 0 : m.alpha),
        backgroundImageBorderRadius: o.backgroundImageBorderRadius || (null === (f = o.background) || void 0 === f ? void 0 : null === (v = f.image) || void 0 === v ? void 0 : v.borderRadius),
        foregroundColor: o.foregroundColor || (null === (C = o.foreground) || void 0 === C ? void 0 : C.color),
        foregroundImageSrc: o.foregroundImageSrc || (null === (p = o.foreground) || void 0 === p ? void 0 : null === (b = p.image) || void 0 === b ? void 0 : b.src),
        foregroundImageWidth: o.foregroundImageWidth || (null === (y = o.foreground) || void 0 === y ? void 0 : null === (k = y.image) || void 0 === k ? void 0 : k.width),
        foregroundImageHeight: o.foregroundImageHeight || (null === (I = o.foreground) || void 0 === I ? void 0 : null === (w = I.image) || void 0 === w ? void 0 : w.height),
        foregroundImageX: o.foregroundImageX || (null === (B = o.foreground) || void 0 === B ? void 0 : null === (T = B.image) || void 0 === T ? void 0 : T.x),
        foregroundImageY: o.foregroundImageY || (null === (P = o.foreground) || void 0 === P ? void 0 : null === (S = P.image) || void 0 === S ? void 0 : S.y),
        foregroundImagePadding: o.foregroundImagePadding || (null === (A = o.foreground) || void 0 === A ? void 0 : null === (E = A.image) || void 0 === E ? void 0 : E.padding),
        foregroundImageBackgroundColor: o.foregroundImageBackgroundColor || (null === (D = o.foreground) || void 0 === D ? void 0 : null === (N = D.image) || void 0 === N ? void 0 : N.backgroundColor),
        foregroundImageBorderRadius: o.foregroundImageBorderRadius || (null === (L = o.foreground) || void 0 === L ? void 0 : null === (R = L.image) || void 0 === R ? void 0 : R.borderRadius),
        foregroundImageShadowOffsetX: o.foregroundImageShadowOffsetX || (null === (z = o.foreground) || void 0 === z ? void 0 : null === (M = z.image) || void 0 === M ? void 0 : M.shadowOffsetX),
        foregroundImageShadowOffsetY: o.foregroundImageShadowOffsetY || (null === (x = o.foreground) || void 0 === x ? void 0 : null === (_ = x.image) || void 0 === _ ? void 0 : _.shadowOffsetY),
        foregroundImageShadowBlur: o.foregroundImageShadowBlur || (null === (O = o.foreground) || void 0 === O ? void 0 : null === (F = O.image) || void 0 === F ? void 0 : F.shadowBlur),
        foregroundImageShadowColor: o.foregroundImageShadowColor || (null === (H = o.foreground) || void 0 === H ? void 0 : null === (X = H.image) || void 0 === X ? void 0 : X.shadowColor),
        foregroundPadding: o.foregroundPadding,
        foregroundRadius: o.foregroundRadius,
        positionProbeBackgroundColor: o.positionProbeBackgroundColor || (null === (j = o.positionProbe) || void 0 === j ? void 0 : j.backgroundColor) || (null === (Y = o.positionDetection) || void 0 === Y ? void 0 : Y.backgroundColor),
        positionProbeForegroundColor: o.positionProbeForegroundColor || (null === (Q = o.positionProbe) || void 0 === Q ? void 0 : Q.foregroundColor) || (null === (G = o.positionDetection) || void 0 === G ? void 0 : G.foregroundColor),
        separatorColor: o.separatorColor || (null === (K = o.separator) || void 0 === K ? void 0 : K.color),
        positionAdjustBackgroundColor: o.positionAdjustBackgroundColor || (null === (W = o.positionAdjust) || void 0 === W ? void 0 : W.backgroundColor) || (null === (q = o.alignment) || void 0 === q ? void 0 : q.backgroundColor),
        positionAdjustForegroundColor: o.positionAdjustForegroundColor || (null === (U = o.positionAdjust) || void 0 === U ? void 0 : U.foregroundColor) || (null === ($ = o.alignment) || void 0 === $ ? void 0 : $.foregroundColor),
        timingBackgroundColor: o.timingBackgroundColor || (null === (J = o.timing) || void 0 === J ? void 0 : J.backgroundColor),
        timingForegroundColor: o.timingForegroundColor || (null === (V = o.timing) || void 0 === V ? void 0 : V.foregroundColor),
        typeNumberBackgroundColor: o.typeNumberBackgroundColor || (null === (Z = o.typeNumber) || void 0 === Z ? void 0 : Z.backgroundColor) || (null === (oo = o.versionInformation) || void 0 === oo ? void 0 : oo.backgroundColor),
        typeNumberForegroundColor: o.typeNumberForegroundColor || (null === (eo = o.typeNumber) || void 0 === eo ? void 0 : eo.foregroundColor) || (null === (ro = o.versionInformation) || void 0 === ro ? void 0 : ro.foregroundColor),
        darkBlockColor: o.darkBlockColor || (null === (to = o.darkBlock) || void 0 === to ? void 0 : to.color),
        style: o.style,
        patterns: o.patterns || (null === (io = o.art) || void 0 === io ? void 0 : io.patterns) || (null === (no = o.art) || void 0 === no ? void 0 : null === (ao = no.shape) || void 0 === ao ? void 0 : ao.map(o => (o.imageSrc = o.image, o))),
        queue: o.queue
      }, !0)
    },
    make() {
      this.foregroundColor === this.backgroundColor && console.error("[uQRCode]: foregroundColor and backgroundColor cannot be the same!");
      var o = new e(this.typeNumber, this.errorCorrectLevel);
      o.addData(u.utf16To8(this.data.toString())), o.make(), this.typeNumber = o.typeNumber, this.modules = o.modules, this.moduleCount = o.moduleCount;
      var r = this.size - 2 * this.margin;
      this.dynamicSize = Math.ceil(r / o.moduleCount) * o.moduleCount + 2 * this.margin, this.useDynamicSize || (this.dynamicSize = this.size), this.paintData(), this.paintPositionProbe(), this.paintSeparator(), this.paintTiming(), this.paintPositionAdjust(), this.paintDarkBlock(), this.paintTypeNumber(), this.getDrawModules()
    },
    paintData() {
      let {
        dynamicSize: o,
        margin: e,
        backgroundColor: r,
        foregroundColor: t,
        foregroundPadding: i,
        style: n,
        modules: a,
        moduleCount: u
      } = this, d = (o - 2 * e) / u, s = d, g = 0;
      i > 0 && "liquid" != n && "art" != n && (g = s * i / 2, s -= 2 * g);
      for (var l = 0; l < u; l++)
        for (var h = 0; h < u; h++) {
          var c = a[l][h];
          if (c) {
            var m = h * d + e + g,
              f = l * d + e + g;
            a[l][h] = {
              size: s,
              x: m,
              y: f,
              type: ["foreground"],
              color: t,
              isBlack: !0,
              isDrawn: !1
            }
          } else a[l][h] = {
            size: s,
            x: h * s + e,
            y: l * s + e,
            type: ["background"],
            color: r,
            isBlack: !1,
            isDrawn: !1
          }
        }
    },
    paintPositionProbe() {
      let {
        modules: o,
        moduleCount: e,
        positionProbeBackgroundColor: r,
        positionProbeForegroundColor: t
      } = this, i = [
        [0, 0, 1],
        [1, 0, 1],
        [2, 0, 1],
        [3, 0, 1],
        [4, 0, 1],
        [5, 0, 1],
        [6, 0, 1],
        [0, 1, 1],
        [1, 1, 0],
        [2, 1, 0],
        [3, 1, 0],
        [4, 1, 0],
        [5, 1, 0],
        [6, 1, 1],
        [0, 2, 1],
        [1, 2, 0],
        [2, 2, 1],
        [3, 2, 1],
        [4, 2, 1],
        [5, 2, 0],
        [6, 2, 1],
        [0, 3, 1],
        [1, 3, 0],
        [2, 3, 1],
        [3, 3, 1],
        [4, 3, 1],
        [5, 3, 0],
        [6, 3, 1],
        [0, 4, 1],
        [1, 4, 0],
        [2, 4, 1],
        [3, 4, 1],
        [4, 4, 1],
        [5, 4, 0],
        [6, 4, 1],
        [0, 5, 1],
        [1, 5, 0],
        [2, 5, 0],
        [3, 5, 0],
        [4, 5, 0],
        [5, 5, 0],
        [6, 5, 1],
        [0, 6, 1],
        [1, 6, 1],
        [2, 6, 1],
        [3, 6, 1],
        [4, 6, 1],
        [5, 6, 1],
        [6, 6, 1]
      ], n = e - 7;
      i.forEach(e => {
        var i = o[e[0]][e[1]],
          a = o[e[0] + n][e[1]],
          u = o[e[0]][e[1] + n];
        u.type.push("positionProbe"), a.type.push("positionProbe"), i.type.push("positionProbe"), i.color = 1 == e[2] ? t : r, a.color = 1 == e[2] ? t : r, u.color = 1 == e[2] ? t : r
      })
    },
    paintSeparator() {
      let {
        modules: o,
        moduleCount: e,
        separatorColor: r
      } = this;
      [
        [7, 0],
        [7, 1],
        [7, 2],
        [7, 3],
        [7, 4],
        [7, 5],
        [7, 6],
        [7, 7],
        [0, 7],
        [1, 7],
        [2, 7],
        [3, 7],
        [4, 7],
        [5, 7],
        [6, 7]
      ].forEach(t => {
        var i = o[t[0]][t[1]],
          n = o[e - t[0] - 1][t[1]],
          a = o[t[0]][e - t[1] - 1];
        a.type.push("separator"), n.type.push("separator"), i.type.push("separator"), i.color = r, n.color = r, a.color = r
      })
    },
    paintPositionAdjust() {
      let {
        typeNumber: o,
        modules: e,
        moduleCount: r,
        foregroundColor: t,
        backgroundColor: i,
        positionAdjustForegroundColor: n,
        positionAdjustBackgroundColor: a,
        timingForegroundColor: u,
        timingBackgroundColor: d
      } = this;
      const s = [
          [],
          [6, 18],
          [6, 22],
          [6, 26],
          [6, 30],
          [6, 34],
          [6, 22, 38],
          [6, 24, 42],
          [6, 26, 46],
          [6, 28, 50],
          [6, 30, 54],
          [6, 32, 58],
          [6, 34, 62],
          [6, 26, 46, 66],
          [6, 26, 48, 70],
          [6, 26, 50, 74],
          [6, 30, 54, 78],
          [6, 30, 56, 82],
          [6, 30, 58, 86],
          [6, 34, 62, 90],
          [6, 28, 50, 72, 94],
          [6, 26, 50, 74, 98],
          [6, 30, 54, 78, 102],
          [6, 28, 54, 80, 106],
          [6, 32, 58, 84, 110],
          [6, 30, 58, 86, 114],
          [6, 34, 62, 90, 118],
          [6, 26, 50, 74, 98, 122],
          [6, 30, 54, 78, 102, 126],
          [6, 26, 52, 78, 104, 130],
          [6, 30, 56, 82, 108, 134],
          [6, 34, 60, 86, 112, 138],
          [6, 30, 58, 86, 114, 142],
          [6, 34, 62, 90, 118, 146],
          [6, 30, 54, 78, 102, 126, 150],
          [6, 24, 50, 76, 102, 128, 154],
          [6, 28, 54, 80, 106, 132, 158],
          [6, 32, 58, 84, 110, 136, 162],
          [6, 26, 54, 82, 110, 138, 166],
          [6, 30, 58, 86, 114, 142, 170]
        ],
        g = s[o - 1];
      if (g) {
        const o = [
            [-2, -2, 1],
            [-1, -2, 1],
            [0, -2, 1],
            [1, -2, 1],
            [2, -2, 1],
            [-2, -1, 1],
            [-1, -1, 0],
            [0, -1, 0],
            [1, -1, 0],
            [2, -1, 1],
            [-2, 0, 1],
            [-1, 0, 0],
            [0, 0, 1],
            [1, 0, 0],
            [2, 0, 1],
            [-2, 1, 1],
            [-1, 1, 0],
            [0, 1, 0],
            [1, 1, 0],
            [2, 1, 1],
            [-2, 2, 1],
            [-1, 2, 1],
            [0, 2, 1],
            [1, 2, 1],
            [2, 2, 1]
          ],
          s = g.length;
        for (let l = 0; l < s; l++)
          for (let h = 0; h < s; h++) {
            let {
              x: s,
              y: c
            } = {
              x: g[l],
              y: g[h]
            };
            s < 9 && c < 9 || s > r - 9 - 1 && c < 9 || c > r - 9 - 1 && s < 9 || o.forEach(o => {
              var r = e[s + o[0]][c + o[1]];
              r.type.push("positionAdjust"), r.type.includes("timing") ? 1 == o[2] ? r.color = n == t ? u : n : r.color = n == t && a == i ? d : a : r.color = 1 == o[2] ? n : a
            })
          }
      }
    },
    paintTiming() {
      let {
        modules: o,
        moduleCount: e,
        timingForegroundColor: r,
        timingBackgroundColor: t
      } = this, i = e - 16;
      for (let e = 0; e < i; e++) {
        var n = o[6][8 + e],
          a = o[8 + e][6];
        n.type.push("timing"), a.type.push("timing"), n.color = 1 & e ^ 1 ? r : t, a.color = 1 & e ^ 1 ? r : t
      }
    },
    paintDarkBlock() {
      let {
        modules: o,
        moduleCount: e,
        darkBlockColor: r
      } = this;
      var t = o[e - 7 - 1][8];
      t.type.push("darkBlock"), t.color = r
    },
    paintTypeNumber() {
      let {
        typeNumber: o,
        modules: e,
        moduleCount: r,
        typeNumberBackgroundColor: t,
        typeNumberForegroundColor: i
      } = this;
      if (o < 7) return e;
      const n = [0, 0, 0, 0, 0, 0, 0, "000111110010010100", "001000010110111100", "001001101010011001", "001010010011010011", "001011101111110110", "001100011101100010", "001101100001000111", "001110011000001101", "001111100100101000", "010000101101111000", "010001010001011101", "010010101000010111", "010011010100110010", "010100100110100110", "010101011010000011", "010110100011001001", "010111011111101100", "011000111011000100", "011001000111100001", "011010111110101011", "011011000010001110", "011100110000011010", "011101001100111111", "011110110101110101", "011111001001010000", "100000100111010101", "100001011011110000", "100010100010111010", "100011011110011111", "100100101100001011", "100101010000101110", "100110101001100100", "100111010101000001", "101000110001101001"];
      let a = n[o] + n[o],
        u = [r - 11, r - 10, r - 9],
        d = [
          [5, u[2]],
          [5, u[1]],
          [5, u[0]],
          [4, u[2]],
          [4, u[1]],
          [4, u[0]],
          [3, u[2]],
          [3, u[1]],
          [3, u[0]],
          [2, u[2]],
          [2, u[1]],
          [2, u[0]],
          [1, u[2]],
          [1, u[1]],
          [1, u[0]],
          [0, u[2]],
          [0, u[1]],
          [0, u[0]],
          [u[2], 5],
          [u[1], 5],
          [u[0], 5],
          [u[2], 4],
          [u[1], 4],
          [u[0], 4],
          [u[2], 3],
          [u[1], 3],
          [u[0], 3],
          [u[2], 2],
          [u[1], 2],
          [u[0], 2],
          [u[2], 1],
          [u[1], 1],
          [u[0], 1],
          [u[2], 0],
          [u[1], 0],
          [u[0], 0]
        ];
      d.forEach((o, r) => {
        var n = e[o[0]][o[1]];
        n.type.push("typeNumber"), n.color = "1" == a[r] ? i : t
      })
    },
    getDrawModules() {
      let o = this.drawModules = [],
        {
          modules: e,
          moduleCount: r,
          dynamicSize: t,
          backgroundColor: i,
          backgroundImageSrc: n,
          backgroundImageX: a,
          backgroundImageY: u,
          backgroundImageWidth: d,
          backgroundImageHeight: s,
          backgroundImageAlpha: g,
          backgroundImageBorderRadius: l,
          style: h,
          patterns: c,
          foregroundImageSrc: m,
          foregroundImageX: f,
          foregroundImageY: v,
          foregroundImageWidth: C,
          foregroundImageHeight: p,
          foregroundImagePadding: b,
          foregroundImageBackgroundColor: y,
          foregroundImageBorderRadius: k,
          foregroundImageShadowOffsetX: I,
          foregroundImageShadowOffsetY: w,
          foregroundImageShadowBlur: B,
          foregroundImageShadowColor: T
        } = this;
      i && o.push({
        name: "background",
        type: "box",
        color: i,
        x: 0,
        y: 0,
        width: t,
        height: t
      }), n && o.push({
        name: "backgroundImage",
        type: "image",
        imageSrc: n,
        imageSource: "backgroundImageSrc",
        x: a,
        y: u,
        width: d,
        height: s,
        alpha: g,
        borderRadius: l
      });
      for (var P = 0; P < r; P++)
        for (var S = 0; S < r; S++) {
          var A = e[P][S];
          A.isDrawn || (A.type.includes("foreground") ? o.push({
            name: "foreground",
            type: "block",
            color: A.color,
            x: A.x,
            y: A.y,
            width: A.size,
            height: A.size,
            rowIndex: P,
            colIndex: S
          }) : o.push({
            name: "background",
            type: "block",
            color: A.color,
            x: A.x,
            y: A.y,
            width: A.size,
            height: A.size,
            rowIndex: P,
            colIndex: S
          }), A.isDrawn = !0)
        }
      m && o.push({
        name: "foregroundImage",
        type: "image",
        imageSrc: m,
        imageSource: "foregroundImageSrc",
        x: f,
        y: v,
        width: C,
        height: p,
        padding: b,
        backgroundColor: y,
        borderRadius: k,
        shadowOffsetX: I,
        shadowOffsetY: w,
        shadowBlur: B,
        shadowColor: T
      })
    },
    getModuleIsBack(o, e) {
      var r = this.moduleCount;
      return !(0 > o || 0 > e || o >= r || e >= r) && this.modules[o][e].isBlack
    },
    drawCanvas() {
      let {
        canvasContext: o,
        foregroundColor: e,
        backgroundColor: r,
        queue: t,
        style: i
      } = this;
      if (e === r) return Promise.reject(new a("[uQRCode]: foregroundColor and backgroundColor cannot be the same!"));
      let n = async (e, r) => {
        try {
          o.draw(!1), await this.styleDefault(), o.draw(!0), setTimeout(e, 150)
        } catch (o) {
          if (!(o instanceof a)) throw o;
          r(o)
        }
      };
      return new Promise((o, e) => {
        t ? u.queue.exec(() => new Promise((o, e) => {
          n(o, e)
        })).then(() => {
          setTimeout(o, 150)
        }).catch(o => {
          e(o)
        }) : n(o, e)
      })
    },
    draw() {
      return this.drawCanvas()
    },
    async styleDefault() {
      let {
        drawModules: o,
        canvasContext: e,
        backgroundColor: r,
        margin: t,
        queue: i
      } = this;
      for (var n = 0; n < o.length; n++) {
        e.save();
        var d = o[n];
        switch (d.type) {
          case "box":
            "background" == d.name && (e.setFillStyle(d.color), e.fillRect(d.x, d.y, d.width, d.height));
            break;
          case "block":
            "foreground" == d.name && (e.beginPath(), e.rect(d.x, d.y, d.width, d.height), e.closePath(), e.fillStyle = d.color, e.fill());
            break;
          case "image":
            if ("backgroundImage" === d.name) {
              var s = d.x,
                g = d.y,
                l = d.width,
                h = d.height,
                c = d.borderRadius;
              l < 2 * c && (c = l / 2), h < 2 * c && (c = h / 2), e.globalAlpha = d.alpha, e.beginPath(), e.moveTo(s + c, g), e.arcTo(s + l, g, s + l, g + h, c), e.arcTo(s + l, g + h, s, g + h, c), e.arcTo(s, g + h, s, g, c), e.arcTo(s, g, s + l, g, c), e.closePath(), e.strokeStyle = "rgba(0,0,0,0)", e.stroke(), e.clip();
              try {
                var m = await u.loadImage(d.imageSrc);
                e.drawImage(m, d.x, d.y, d.width, d.height)
              } catch (o) {
                throw console.error(`[uQRCode]: ${d.imageSource} invalid!`), new a(`[uQRCode]: ${d.imageSource} invalid!`)
              }
            } else if ("foregroundImage" === d.name) {
              s = d.x, g = d.y, l = d.width, h = d.height, c = d.borderRadius;
              l < 2 * c && (c = l / 2), h < 2 * c && (c = h / 2);
              var f = d.x - d.padding,
                v = d.y - d.padding,
                C = d.width + 2 * d.padding,
                p = d.height + 2 * d.padding,
                b = C / l * c;
              C < 2 * b && (b = C / 2), p < 2 * b && (b = p / 2), e.save(), e.shadowOffsetX = d.shadowOffsetX, e.shadowOffsetY = d.shadowOffsetY, e.shadowBlur = d.shadowBlur, e.shadowColor = d.shadowColor, e.beginPath(), e.moveTo(f + b, v), e.arcTo(f + C, v, f + C, v + p, b), e.arcTo(f + C, v + p, f, v + p, b), e.arcTo(f, v + p, f, v, b), e.arcTo(f, v, f + C, v, b), e.closePath(), e.setFillStyle(d.backgroundColor), e.fill(), e.restore(), e.beginPath(), e.moveTo(f + b, v), e.arcTo(f + C, v, f + C, v + p, b), e.arcTo(f + C, v + p, f, v + p, b), e.arcTo(f, v + p, f, v, b), e.arcTo(f, v, f + C, v, b), e.closePath(), e.setFillStyle(d.padding > 0 ? d.backgroundColor : "rgba(0,0,0,0)"), e.fill(), e.beginPath(), e.moveTo(s + c, g), e.arcTo(s + l, g, s + l, g + h, c), e.arcTo(s + l, g + h, s, g + h, c), e.arcTo(s, g + h, s, g, c), e.arcTo(s, g, s + l, g, c), e.closePath(), e.strokeStyle = "rgba(0,0,0,0)", e.stroke(), e.clip();
              try {
                m = await u.loadImage(d.imageSrc);
                e.drawImage(m, d.x, d.y, d.width, d.height)
              } catch (o) {
                throw console.error(`[uQRCode]: ${d.imageSource} invalid!`), new a(`[uQRCode]: ${d.imageSource} invalid!`)
              }
            }
        }
        i && e.draw(!0), e.restore()
      }
    }
  }, uQRCode = u, uQRCode.export = function() {
    var o, e;
    o = "undefined" != typeof window ? window : global, e = uQRCode, "undefined" != typeof module && "object" == typeof exports ? module.exports = e : "function" == typeof define && (define.amd || define.cmd) ? define(function() {
      return e
    }) : o.UQRCode = e
  }
}();
//---------------------------------------------------------------------
// 默认导出方式，非vite(vue3)使用该方式。
// ↓
//---------------------------------------------------------------------
// uQRCode.export();
//---------------------------------------------------------------------
// ES6导出方式，vite(vue3)使用该方式。
// ↓
//---------------------------------------------------------------------
export default uQRCode;
